#pragma pack_matrix(row_major)
struct V_IN
{
	float3 posL : POSITION;
	float3 normal : NORMAL;
	float2 uv : UVS;
	float4 color : COLOR;
};
struct V_OUT
{
	float4 projectedCoordinate : SV_POSITION;
	float4 colorOut : COLOR;
	float3 transformedNormal : NORMAL;
	float4 surfacePos : SURFACE;
	float3 uvCoods : UV;
	
};
cbuffer OBJECT : register(b0)
{
	float4x4 worldMatrix;
	float4x4 viewMatrix;
	float4x4 projectionMatrix;
}


V_OUT main(V_IN input)
{
	V_OUT output = (V_OUT)0;

	float4 localH = float4(input.posL, 1);
		
	localH = mul(localH, worldMatrix);
	localH = mul(localH, viewMatrix);
	localH = mul(localH, projectionMatrix);


	output.projectedCoordinate = localH;
	output.colorOut = input.color;
	
	return output; // send projected vertex to the rasterizer stage
}